// 这个文件是一个自定义hooks

import axios from 'axios'
import {useState,useEffect} from 'react'
import { notification } from 'antd'

function usePublish(type) {

    // 从本地存储中获取用户数据
    const { username } = JSON.parse(localStorage.getItem("token"))

    const [dataSource, setDataSource] = useState([])

    useEffect(() => {
        // 根据当前这个hooks的调用者传递过来的参数type取发起请求
        axios(`/news?author=${username}&publishState=${type}&_expand=category`).then(res => {
            // console.log(res);
            setDataSource(res.data)
        })
    }, [])

    // 这里定义的方法会被return返回出去,在其他组件中,只要调用了当前这个自定义钩子,就可以获取到这里定义的方法
    const handlePublish = (id) => {
        // console.log(id);
        setDataSource(dataSource.filter(item => item.id !== id))
    
        axios.patch(`/news/${id}`, {
          "publishState": 2
        }).then(res => {
          // 提示框
          notification.info({
            title: "通知",
            description: "【发布管理/已经发布】中查看新闻",
            placement: "bottomRight"
          })
        })
      }

    // 这里定义的方法会被return返回出去,在其他组件中,只要调用了当前这个自定义钩子,就可以获取到这里定义的方法
    const handleSunset = (id) => {
        setDataSource(dataSource.filter(item => item.id !== id))

        axios.patch(`/news/${id}`, {
            "publishState": 3
        }).then(res => {
            notification.info({
            title: "通知",
            description: "【发布管理/已下线】中查看新闻",
            placement: "bottomRight"
            })
        })
    }
    
    // 这里定义的方法会被return返回出去,在其他组件中,只要调用了当前这个自定义钩子,就可以获取到这里定义的方法
    const handleDelete = (id) => {
        setDataSource(dataSource.filter(item => item.id !== id))
    
        axios.delete(`/news/${id}`).then(res => {
            notification.info({
                title: "通知",
                description: "已删除新闻",
                placement: "bottomRight"
            })
        })
    }

    return {
        dataSource,
        handlePublish,
        handleDelete,
        handleSunset
    }
}

export default usePublish